brute force implementation number theory strings

Please click on ads to support us..

Python Code:

def subst(s, st, ed):
    result = []
    for i in range(st, ed):
        result.append(s[i])
    return ''.join(result)

for _ in range(int(input())):
    n = int(input())
    s = input().strip()
    f = 0
    
        for i in range(1, n // 2 + 1):
        if n % i == 0:
            dic = {}
            dicsz = 0
            for j in range(0, n, i):
                dd = subst(s, j, j + i)
                if dd not in dic:
                    dic[dd] = 1
                    dicsz += 1
                else:
                    dic[dd] += 1
            if dicsz == 1:
                for _, dj in dic.items():
                    if i * dj == n and f <= 1:
                        print(i)
                        f = 1
                        break
            if dicsz == 2:
                x = list(dic.keys())
                c = sum(x[0][comp] != x[1][comp] for comp in range(i))
                for _, j in dic.items():
                    if i * (j + 1) == n and c <= 1:
                        print(i)
                        f = 1
                        break
            if f == 1:
                break
                
    if f == 0:
        print(n)


Comments

Submit
0 Comments
More Questions

957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)